package com.zjcloud.academic.domain;

import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 课表管理对象 ac_course_schedule
 * 
 * @author zjcloud
 * @date 2024-01-01
 */
public class AcCourseSchedule extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 课表ID */
    private Long id;

    /** 学期ID */
    @Excel(name = "学期ID")
    @NotNull(message = "学期ID不能为空")
    private Long semesterId;

    /** 学期名称 */
    @Excel(name = "学期名称")
    private String semesterName;

    /** 课程ID */
    @Excel(name = "课程ID")
    @NotNull(message = "课程ID不能为空")
    private Long courseId;

    /** 课程名称 */
    @Excel(name = "课程名称")
    private String courseName;

    /** 班级ID */
    @Excel(name = "班级ID")
    @NotNull(message = "班级ID不能为空")
    private Long classId;

    /** 班级名称 */
    @Excel(name = "班级名称")
    private String className;

    /** 教师ID */
    @Excel(name = "教师ID")
    @NotNull(message = "教师ID不能为空")
    private Long teacherId;

    /** 教师名称 */
    @Excel(name = "教师名称")
    private String teacherName;

    /** 教室ID */
    @Excel(name = "教室ID")
    private Long classroomId;

    /** 教室名称 */
    @Excel(name = "教室名称")
    private String classroomName;

    /** 星期几(1-7) */
    @Excel(name = "星期几", readConverterExp = "1=星期一,2=星期二,3=星期三,4=星期四,5=星期五,6=星期六,7=星期日")
    @NotNull(message = "星期几不能为空")
    private Integer weekDay;

    /** 开始时间 */
    @Excel(name = "开始时间", width = 30, dateFormat = "HH:mm")
    @NotNull(message = "开始时间不能为空")
    private Date startTime;

    /** 结束时间 */
    @Excel(name = "结束时间", width = 30, dateFormat = "HH:mm")
    @NotNull(message = "结束时间不能为空")
    private Date endTime;

    /** 周类型(0:每周,1:单周,2:双周) */
    @Excel(name = "周类型", readConverterExp = "0=每周,1=单周,2=双周")
    private Integer weekType;

    /** 开始周 */
    @Excel(name = "开始周")
    private Integer startWeek;

    /** 结束周 */
    @Excel(name = "结束周")
    private Integer endWeek;

    /** 状态(1:有效,0:无效) */
    @Excel(name = "状态", readConverterExp = "0=无效,1=有效")
    private Integer status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setSemesterId(Long semesterId) 
    {
        this.semesterId = semesterId;
    }

    public Long getSemesterId() 
    {
        return semesterId;
    }
    public void setCourseId(Long courseId) 
    {
        this.courseId = courseId;
    }

    public Long getCourseId() 
    {
        return courseId;
    }
    public void setClassId(Long classId) 
    {
        this.classId = classId;
    }

    public Long getClassId() 
    {
        return classId;
    }
    public void setTeacherId(Long teacherId) 
    {
        this.teacherId = teacherId;
    }

    public Long getTeacherId() 
    {
        return teacherId;
    }
    public void setClassroomId(Long classroomId) 
    {
        this.classroomId = classroomId;
    }

    public Long getClassroomId() 
    {
        return classroomId;
    }
    public void setWeekDay(Integer weekDay) 
    {
        this.weekDay = weekDay;
    }

    public Integer getWeekDay() 
    {
        return weekDay;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setWeekType(Integer weekType) 
    {
        this.weekType = weekType;
    }

    public Integer getWeekType() 
    {
        return weekType;
    }
    public void setStartWeek(Integer startWeek) 
    {
        this.startWeek = startWeek;
    }

    public Integer getStartWeek() 
    {
        return startWeek;
    }
    public void setEndWeek(Integer endWeek) 
    {
        this.endWeek = endWeek;
    }

    public Integer getEndWeek() 
    {
        return endWeek;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }

    public String getSemesterName() {
        return semesterName;
    }

    public void setSemesterName(String semesterName) {
        this.semesterName = semesterName;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public String getClassroomName() {
        return classroomName;
    }

    public void setClassroomName(String classroomName) {
        this.classroomName = classroomName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("semesterId", getSemesterId())
            .append("semesterName", getSemesterName())
            .append("courseId", getCourseId())
            .append("courseName", getCourseName())
            .append("classId", getClassId())
            .append("className", getClassName())
            .append("teacherId", getTeacherId())
            .append("teacherName", getTeacherName())
            .append("classroomId", getClassroomId())
            .append("classroomName", getClassroomName())
            .append("weekDay", getWeekDay())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("weekType", getWeekType())
            .append("startWeek", getStartWeek())
            .append("endWeek", getEndWeek())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}